package com.xian.d9_genericity_method;

/**+
 * 泛型方法的概述
 * 定义方法时同时定义了泛型的方法就是泛型方法。
 *
 * 泛型方法的格式:
 * 修饰符<泛型变量>方法返回值方法名称(形参列表)
 * 范例: public <T> void show(T t){ }
 *
 * 作用:方法中可以使用泛型接收一切实际类型的参数，方法更具备通用性。
 *
 * 泛型方法的原理:
 * 把出现泛型变量的地方全部替换成传输的真实数据类型。
 */
public class GenericityDemo {
    //需求: 给你任何一个类型的数组，都能返回它的内容。也就是实现Arrays.toString(数组)的功能!
    public static void main(String[] args) {
        String[] names = {"小璐", "蓉容", "小何"};
        Integer[] ages = {10, 20, 30};

        printArray(names);
        printArray(ages);
    }

    public static <T> void printArray(T[] arr) {
        StringBuilder sb = new StringBuilder("[");
        if (arr != null) {
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(i == arr.length - 1 ? "" : ", ");
            }
            sb.append("]");
            System.out.println(sb);
        } else {
            System.out.println(arr);
        }
    }
}
